home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / RLaB 1.18c / testmatrix / smoke.r < prev    next >
Text File  |  1994-12-27  |  1KB  |  47 lines

  1. //-------------------------------------------------------------------//
  2.  
  3. // Synopsis:    Smoke matrix - complex, with a `smoke ring' pseudospectrum.
  4.  
  5. // Syntax:      smoke ( N )
  6.  
  7. // Description:
  8.  
  9. //      SMOKE(N) is an N-by-N matrix with 1s on the superdiagonal, 1
  10. //      in the (N,1) position, and powers of roots of unity along the
  11. //      diagonal.  SMOKE(N, 1) is the same except for a zero (N,1)
  12. //      element.  The eigenvalues of SMOKE(N, 1) are the N'th roots of
  13. //      unity; those of SMOKE(N) are the N'th roots of unity times
  14. //      2^(1/N).
  15.  
  16. //      Try PS(SMOKE(32)).  For SMOKE(N, 1) the pseudospectrum looks
  17. //      like a sausage folded back on itself.
  18.  
  19. //      GERSH(SMOKE(N, 1)) is interesting.
  20.  
  21. //      Reference:
  22. //      L. Reichel and L.N. Trefethen, Eigenvalues and pseudo-eigenvalues of
  23. //      Toeplitz matrices, Linear Algebra and Appl., 162-164:153-185, 1992.
  24.  
  25. //    This file is a translation of smoke.m from version 2.0 of
  26. //    "The Test Matrix Toolbox for Matlab", described in Numerical
  27. //    Analysis Report No. 237, December 1993, by N. J. Higham.
  28.  
  29. //-------------------------------------------------------------------//
  30.  
  31. smoke = function (n, k)
  32. {
  33.   local (n, k)
  34.   global (pi)
  35.  
  36.   if (!exist (k)) { k = 0; }
  37.  
  38.   w = exp (2*pi*1i/n);
  39.   A = diag ( [w.^(1:n-1), 1] ) + diag (ones (n-1, 1), 1);
  40.   if (k == 0) 
  41.   { 
  42.     A[n;1] = 1; 
  43.   }
  44.  
  45.   return A;
  46. };
  47.